package com.sxj.corejava.code09_集合.Map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

/**
 * @author 石小俊
 */
public class Test02_遍历方式 {

    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "admin");
        map.put(2, "jack");
        map.put(3, "tom");
        map.put(4, "lucy");
        map.put(5, "john");

        // Map的遍历一般均需要转换成Set进行
        // 方式一:通过keySet遍历所有的key,然后根据key获取对应的value
        Set<Integer> set = map.keySet();
        for (Integer key : set) {
            System.out.println("key:" + key + ",value:" + map.get(key));
        }
        System.out.println("*******************************");

        // 方式二:通过values方法直接遍历Map集合中所有的值,该方式无法获取到对应的key
        Collection<String> values = map.values();
        for (String value : values) {
            System.out.println(value);
        }
        System.out.println("*******************************");
        // 方式三:通过entrySet方法遍历所有的key-value
        // 该方式需要用到内部类Entry
        // 每一个Entry对象对应一组键值对数据
//        Set<Map.Entry<Integer, String>> entries = map.entrySet();
//        for(Map.Entry entry : entries){
//            System.out.println("key:"+entry.getKey()+",value:"+entry.getValue());
//        }
        // 可以手动导入java.util.Map.Entry
        Set<Entry<Integer, String>> entries = map.entrySet();
        for (Entry entry : entries) {
            System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue());
        }
    }

}
